import 'package:demo/app/modules/main/main_controller.dart';
import 'package:flutter/material.dart';
import 'package:flutter_easyloading/flutter_easyloading.dart';
import 'package:flutter_screenutil/flutter_screenutil.dart';
import 'package:get/get.dart';

import '../../../../model/form_item_model.dart';
import '../../../../model/person_model.dart';
import '../../../../model/product_model.dart';
import '../../../../net/api_provider.dart';
import '../../../../theme/app_colors.dart';
import '../../../../theme/app_text_theme.dart';
import '../../../../utils/sp_util.dart';
import '../../../global.dart';
import '../../../widgets/CommonDialog.dart';

class ProductController extends GetxController with StateMixin<List<Product>> {


  final MainController _mainController = Get.find();

  @override
  void onInit() {
    super.onInit();
    getUserDetail(); // 第一次就撞，之后点击到tab再来
    ever(_mainController.currentIndex, (value) {
      if(_mainController.listSize == 4 && value == 1){
        getUserDetail();
      }
    });
  }

  @override
  void onReady() {
    super.onReady();
    // if(Get.arguments != null && Get.arguments['isLoadAll']){
      getProduct();
    // }
  }



  getProduct() async {
    change(null,status: RxStatus.loading());
    var result = await apiProvider.getData({}, ApiProvider.product_list);
    if(result.code == 200){
      List<dynamic> resultList = result.data;
      if(resultList.isNotEmpty && !Global.isAuditing){
        List<Product> list = [];
        for(dynamic i in resultList){
          list.add(Product.fromJson(i));
        }
        change(list,status: RxStatus.success());
      }else{
        change(null,status: RxStatus.empty());
      }
    }else{
      change(null,status: RxStatus.error(result.msg));
    }
  }

  ApiProvider apiProvider = Get.find();


  TextEditingController? nameController = TextEditingController();
  TextEditingController? genderController = TextEditingController();
  TextEditingController? ageController = TextEditingController();
  TextEditingController? cityController = TextEditingController();
  TextEditingController? identityController = TextEditingController();
  var selectProvinceCode = ''; // 选择的省份
  var selectProvinceValue = ''; // 选择的省份
  var selectCityCode = ''; // 选择的城市

  var cityList = {}.obs; // 某个省下的城市
  FormItem? form;

  var isShowName = false.obs; // 是否显示姓名
  var isShowAge = false.obs; // 是否显示年龄
  var isShowGender = false.obs; // 是否显示性别
  var isShowCity = false.obs; // 是否显示城市
  var isShowIdentity = false.obs; // 是否显示身份证
  var isShowPersonal = false.obs; // 是否显示6项
  var isShowHuaBei = false.obs; // 是否显示花呗
  var isShowBaiTiao = false.obs; // 是否显示白条
  var isShowZmf = false.obs; // 是否显示芝麻分
  var qualificationList = [].obs; // 六项除去都没有的 house:房产,car:车产,social:社保,accumulation:公积金,insurance:保险,enterprise:企业
  IdAndName? qualificationNotAll; // 都没有 all_not:以上都没有
  var huaBaiList = [].obs; // 花呗
  var baiTiaoList = [].obs; // 白条
  var zmfList = [].obs; // 芝麻分
  Person? person; // 个人资料


  var temp = '1'.obs; // 更新数据用的，一个bug，不知道为啥更新qualificationList更新不了UI
  /// 点击产品申请
  void clickApply(Product product) async {
    Map<String, dynamic> obj = {
      'product_id': product.id,
      'channel_id': SpUtil.read(SpUtil.CHANNEL_ID, ''),
    };
    var result = await apiProvider.getData(obj, ApiProvider.product_click);
    if(result.code == 200){
      await _mainController.platform.invokeMethod('toWebView',{'url':product.url,'title':product.name});
    }else{
      EasyLoading.showToast('${result.msg}');
    }
  }

  /// 获取用户填写过的资料
  void getUserDetail() async{
    var result = await apiProvider.getData({}, ApiProvider.api_person);
    if(result.code == 200){
      person = Person.fromJson(result.data);

      nameController?.text = person!.name;
      genderController?.text = person!.gender == '1' ? '男' : (person!.gender == '2' ? '女' : '');
      ageController?.text = person!.age;
      identityController?.text = person!.identityNum; // 身份证号
      selectProvinceCode = person!.provCode; // 选择的省份
      selectProvinceValue = person!.ipProvince; // 选择的省份
      selectCityCode = person!.cityCode; // 选择的城市
      cityController?.text = person!.ipCity; // 选择的城市

      getFormItem();
    }
  }

  /// 获取表单配置项
  void getFormItem() async{
    var result = await apiProvider.getData({}, ApiProvider.form_item);
    if(result.code == 200){
      form = FormItem.fromJson(result.data);
      isShowName.value = form!.isShowName == 1;
      isShowAge.value = form!.isShowAge == 1; // 是否显示年龄
      isShowGender.value = form!.isShowGender == 1; // 是否显示性别
      isShowCity.value = form!.isShowCity == 1 && form!.provinceList != null && form!.cityList != null; // 是否显示城市
      isShowIdentity.value = form!.isShowIdentity == 1; // 是否显示身份证
      isShowPersonal.value = form!.isShowPersonal == 1 && form!.qualificationList != null && form!.qualificationList!.isNotEmpty; // 是否显示6项
      // 个人资产的6项
      qualificationList.clear();
      if(form!.qualificationList != null && form!.qualificationList!.isNotEmpty){
        var tempList = <IdAndName>[];
        form!.qualificationList!.forEach((e) {
          if(e.id=='all_not'){
            qualificationNotAll = e;
            qualificationNotAll!.select = person?.allNot == '0';
          }else if(e.id=='accumulation'){ // 公积金 0是无1是有
            e.select = person?.accumulation == '1';
            tempList.add(e);
          }else if(e.id=='house'){ // 房产 0是无1是有
            e.select = person?.house == '1';
            tempList.add(e);
          }else if(e.id=='car'){ // 车产 0是无1是有
            e.select = person?.car == '1';
            tempList.add(e);
          }else if(e.id=='insurance'){ // 保险 0是无1是有
            e.select = person?.insurance == '1';
            tempList.add(e);
          }else if(e.id=='enterprise'){ // 企业 0是无1是有
            e.select = person?.enterprise == '1';
            tempList.add(e);
          }else if(e.id=='social'){ // 社保 0是无1是有
            e.select = person?.social == '1';
            tempList.add(e);
          }
        });
        qualificationList.addAll(tempList);
      }

      // 花呗
      isShowHuaBei.value = form!.isShowHuaBei == 1 && form!.huaBeiList != null && form!.huaBeiList!.isNotEmpty; // 是否显示花呗
      huaBaiList.clear();
      if(form!.huaBeiList != null && form!.huaBeiList!.isNotEmpty){
        var tempList = <IdAndName>[];
        form!.huaBeiList!.forEach((e) {
          e.select = e.id == person?.huaBeiLimit;
          tempList.add(e);
        });
        huaBaiList.addAll(tempList);
      }
      // 白条
      isShowBaiTiao.value = form!.isShowBaiTiao == 1 && form!.baiTiaoList != null && form!.baiTiaoList!.isNotEmpty; // 是否显示白条
      baiTiaoList.clear();
      if(form!.baiTiaoList != null && form!.baiTiaoList!.isNotEmpty){
        var tempList = <IdAndName>[];
        form!.baiTiaoList!.forEach((e) {
          e.select = e.id == person?.baiTiaoLimit;
          tempList.add(e);
        });
        baiTiaoList.addAll(tempList);
      }

      // 芝麻分
      isShowZmf.value = form!.isShowZmf == 1 && form!.zmScoreList != null && form!.zmScoreList!.isNotEmpty; // 是否显示芝麻分
      zmfList.clear();
      if(form!.zmScoreList != null && form!.zmScoreList!.isNotEmpty){
        var tempList = <IdAndName>[];
        form!.zmScoreList!.forEach((e) {
          e.select = e.id == person?.zmScore;
          tempList.add(e);
        });
        zmfList.addAll(tempList);
      }

      var isShowDialog = false;
      if(person != null){
        if(isShowName.value && person!.name.isEmpty){
          isShowDialog = true;
        }
        if(isShowAge.value && person!.age.isEmpty){
          isShowDialog = true;
        }
        if(isShowGender.value && person!.gender.isEmpty){
          isShowDialog = true;
        }
        if(isShowCity.value && person!.cityCode.isEmpty){
          isShowDialog = true;
        }
        if(isShowIdentity.value && person!.identityNum.isEmpty){
          isShowDialog = true;
        }
        if(isShowPersonal.value && person!.allNot == '1' && person!.accumulation == '0' && person!.house == '0' && person!.car == '0' && person!.insurance == '0' && person!.enterprise == '0' && person!.social == '0'){
          isShowDialog = true;
        }
        if(isShowHuaBei.value && person!.huaBeiLimit.isEmpty){
          isShowDialog = true;
        }
        if(isShowBaiTiao.value && person!.baiTiaoLimit.isEmpty){
          isShowDialog = true;
        }
        if(isShowZmf.value && person!.zmScore.isEmpty){
          isShowDialog = true;
        }
      }

      var finishInfo = SpUtil.read(SpUtil.FINISH_API_INFO, false);
      if(isShowDialog || !finishInfo){
        SpUtil.write(SpUtil.FINISH_API_INFO, true);
        fillInfo();
      }else{
        if(isShowName.value || isShowAge.value || isShowGender.value || isShowCity.value || isShowIdentity.value || isShowPersonal.value || isShowHuaBei.value || isShowBaiTiao.value || isShowZmf.value){
          check();
        }
      }
    }
  }

  // 填写资料
  fillInfo(){
    var contentWidth = Get.width - 30.w - 30.w - 50.w;
    var qualificationLine = ((form!.qualificationList!.length - 1) / 3).ceil();

    Get.dialog(
      CommonDialog(
        canCancel: false,
        hintNo: true,
        hintYes: true,
        contentWidget: Column(
          children: [
            Expanded(
              child: SingleChildScrollView(
                child: Obx(()=>Column(
                  crossAxisAlignment : CrossAxisAlignment.start,
                  mainAxisSize : MainAxisSize.min,
                  children: [
                    Text('检测到您还未完善资料，请先完善资料以便更准确的为你提供服务。',style: text_grey_12.copyWith(fontSize: 10.sp)),
                    Visibility(
                        visible: isShowName.value || isShowAge.value || isShowGender.value || isShowCity.value || isShowIdentity.value,
                        child: Text('基本信息',style: text_131732_12b).marginOnly(top: 15.w)),

                    // 姓名
                    Visibility(
                      visible: isShowName.value,
                      child: Row(
                        mainAxisAlignment : MainAxisAlignment.spaceBetween,
                        children: [
                          Text('姓名',style: text_131732_12),
                          SizedBox(
                            width: Get.width / 2,
                            child: TextField(
                              maxLength: 11,
                              controller: nameController,
                              cursorColor: Color_grey,
                              textAlign : TextAlign.end,
                              style: text_131732_12,
                              decoration: InputDecoration(
                                isDense: true,
                                counterText: "", // 去掉底部计数
                                enabledBorder: InputBorder.none,
                                focusedBorder: InputBorder.none,
                                hintText: '请如实填写您的姓名',
                                hintStyle: text_grey_12,
                              ),
                            ),
                          ),
                        ],
                      ),
                    ),
                    Container(height: isShowName.value ? 0.2 : 0,color: Color_line),

                    // 性别
                    Visibility(
                        visible: isShowGender.value,
                        child: Row(
                          mainAxisAlignment : MainAxisAlignment.spaceBetween,
                          children: [
                            Text('性别',style: text_131732_12),
                            Container(
                              width: Get.width / 2,
                              child: TextField(
                                controller : genderController,
                                onTap: () => chooseGender(),
                                readOnly:true,
                                cursorColor: Color_grey,
                                textAlign : TextAlign.end,
                                style: text_131732_12,
                                decoration: InputDecoration(
                                  isDense: true,
                                  counterText: "", // 去掉底部计数
                                  enabledBorder: InputBorder.none,
                                  focusedBorder: InputBorder.none,
                                  hintText: '请选择性别 〉',
                                  hintStyle: text_grey_12,
                                ),
                              ),
                            ),
                          ],
                        )),
                    Container(height: isShowGender.value ? 0.2 : 0, color: Color_line),

                    // 年龄
                    Visibility(
                      visible: isShowAge.value,
                      child: Row(
                        mainAxisAlignment : MainAxisAlignment.spaceBetween,
                        children: [
                          Text('年龄',style: text_131732_12),
                          SizedBox(
                            width: Get.width / 2,
                            child: TextField(
                              maxLength: 11,
                              controller: ageController,
                              cursorColor: Color_grey,
                              textAlign : TextAlign.end,
                              keyboardType: TextInputType.number,
                              style: text_131732_12,
                              decoration: InputDecoration(
                                isDense: true,
                                counterText: "", // 去掉底部计数
                                enabledBorder: InputBorder.none,
                                focusedBorder: InputBorder.none,
                                hintText: '请填写您的年龄',
                                hintStyle: text_grey_12,
                              ),
                            ),
                          ),
                        ],
                      ),
                    ),
                    Container(height: isShowAge.value ? 0.2 : 0,color: Color_line),

                    // 身份证
                    Visibility(
                        visible: isShowIdentity.value,
                        child: Row(
                          mainAxisAlignment : MainAxisAlignment.spaceBetween,
                          children: [
                            Text('身份证',style: text_131732_12),
                            SizedBox(
                              width: Get.width / 2,
                              child: TextField(
                                keyboardType: TextInputType.number,
                                maxLength: 18,
                                controller: identityController,
                                cursorColor: Color_grey,
                                textAlign : TextAlign.end,
                                style: text_131732_12,
                                decoration: InputDecoration(
                                  isDense: true,
                                  counterText: "", // 去掉底部计数
                                  enabledBorder: InputBorder.none,
                                  focusedBorder: InputBorder.none,
                                  hintText: '请输入身份证号',
                                  hintStyle: text_grey_12,
                                ),
                              ),
                            ),
                          ],
                        )),
                    Container(height: isShowIdentity.value ? 0.2 : 0,color: Color_line),

                    // 城市
                    Visibility(
                        visible: isShowCity.value,
                        child: Row(
                          mainAxisAlignment : MainAxisAlignment.spaceBetween,
                          children: [
                            Text('所在城市',style: text_131732_12),
                            SizedBox(
                              width: Get.width / 2,
                              child: TextField(
                                controller : cityController,
                                onTap: () => chooseProvince(),
                                readOnly:true,
                                cursorColor: Color_grey,
                                textAlign : TextAlign.end,
                                style: text_131732_12,
                                decoration: InputDecoration(
                                  isDense: true,
                                  counterText: "", // 去掉底部计数
                                  enabledBorder: InputBorder.none,
                                  focusedBorder: InputBorder.none,
                                  hintText: '请选择所在城市 〉',
                                  hintStyle: text_grey_12,
                                ),
                              ),
                            ),
                          ],
                        )),
                    Container(height: isShowCity.value ? 0.2 : 0, color: Color_line),

                    Visibility(
                        visible: isShowPersonal.value && form != null && form!.qualificationList != null && form!.qualificationList!.isNotEmpty,
                        child: Text('个人资产(可多选)',style: text_131732_12b).marginOnly(top: 15.w,bottom: 10.w)),

                    SizedBox(height:0,child: Text(temp.value)),

                    Visibility(
                      visible: isShowPersonal.value && form != null && form!.qualificationList != null && form!.qualificationList!.isNotEmpty,
                      child: SizedBox(
                        height: qualificationLine * 30.w + (qualificationLine - 1) * 10.w + 30.w+10.w,
                        width: contentWidth,
                        child: CustomScrollView(
                            physics:const NeverScrollableScrollPhysics(),
                            shrinkWrap:true,
                            slivers: [
                              SliverGrid(
                                gridDelegate: SliverGridDelegateWithFixedCrossAxisCount(
                                    crossAxisCount: 3,
                                    mainAxisSpacing : 10.w,
                                    crossAxisSpacing : 10.w,
                                    childAspectRatio : (contentWidth - 20.w) / 3 / 30.w
                                ),
                                // delegate: SliverChildListDelegate(list),
                                delegate: SliverChildBuilderDelegate((context, index) {
                                  var bean = qualificationList[index];
                                  return RawMaterialButton(
                                      elevation: 0,
                                      fillColor:bean.select ?Color_main:Color_bg,
                                      highlightElevation : 0,
                                      shape: RoundedRectangleBorder(borderRadius: BorderRadius.circular(4.w)),
                                      constraints: BoxConstraints.tightFor(width: (contentWidth - 20.w) / 3, height: 30.w),
                                      child: Text('${bean.name}',style: text_131732_12.copyWith(color: bean.select?Color_white:Color_131732)),
                                      onPressed: ()=> {
                                        qualificationList[index].select = !qualificationList[index].select,
                                        qualificationNotAll?.select = false,
                                        temp.value = '${DateTime.now()}'
                                      }
                                  );
                                },
                                  childCount: qualificationList.length,
                                ),
                              ),
                              SliverList(
                                  delegate: SliverChildListDelegate([
                                    Container(
                                        margin: EdgeInsets.only(top: 10.w),
                                        height: 30.w,
                                        child: RawMaterialButton(
                                            elevation: 0,
                                            fillColor:qualificationNotAll!.select ?Color_main:Color_bg,
                                            shape: RoundedRectangleBorder(borderRadius: BorderRadius.circular(4.w)),
                                            highlightElevation : 0,
                                            constraints: BoxConstraints.tightFor(width: contentWidth, height: 30.w),
                                            child: Text('以上都没有',style: text_131732_12.copyWith(color: qualificationNotAll!.select?Color_white:Color_131732)),
                                            onPressed: ()=> {
                                              for(IdAndName i in qualificationList){
                                                i.select = false
                                              },
                                              qualificationNotAll?.select = true,
                                              temp.value = '${DateTime.now()}'
                                            }
                                        )
                                    )]
                                  )
                              )
                            ]
                        ),
                      ),
                    ),

                    Visibility(
                        visible: isShowHuaBei.value && form != null && form!.huaBeiList != null && form!.huaBeiList!.isNotEmpty,
                        child: Text('蚂蚁花呗剩余额度',style: text_131732_12b).marginOnly(top: 15.w,bottom: 10.w)),
                    Visibility(
                      visible: isShowHuaBei.value && form != null && form!.huaBeiList != null && form!.huaBeiList!.isNotEmpty,
                      child: SizedBox(
                        height:  (form!.huaBeiList!.length / 3).ceil() * 30.w + ((form!.huaBeiList!.length / 3).ceil() - 1) * 10.w,
                        width: contentWidth,
                        child: CustomScrollView(
                          physics:const NeverScrollableScrollPhysics(),
                          shrinkWrap:true,
                          slivers: [
                            SliverGrid(
                              gridDelegate: SliverGridDelegateWithFixedCrossAxisCount(
                                  crossAxisCount: 3,
                                  mainAxisSpacing : 10.w,
                                  crossAxisSpacing : 10.w,
                                  childAspectRatio : (contentWidth - 20.w) / 3 / 30.w
                              ),
                              // delegate: SliverChildListDelegate(list),
                              delegate: SliverChildBuilderDelegate((context, index) {
                                var bean = huaBaiList[index];
                                return RawMaterialButton(
                                    elevation: 0,
                                    fillColor:bean.select ?Color_main:Color_bg,
                                    highlightElevation : 0,
                                    shape: RoundedRectangleBorder(borderRadius: BorderRadius.circular(4.w)),
                                    constraints: BoxConstraints.tightFor(width: (contentWidth - 20.w) / 3, height: 30.w),
                                    child: Text('${bean.name}',style: text_131732_12.copyWith(color: bean.select?Color_white:Color_131732)),
                                    onPressed: ()=> {
                                      for(IdAndName i in huaBaiList){
                                        i.select = false
                                      },
                                      huaBaiList[index].select = true,
                                      temp.value = '${DateTime.now()}'
                                    }
                                );
                              },
                                childCount: huaBaiList.length,
                              ),
                            ),
                          ],
                        ),
                      ),
                    ),

                    Visibility(
                        visible: isShowBaiTiao.value && form != null && form!.baiTiaoList != null && form!.baiTiaoList!.isNotEmpty,
                        child: Text('京东白条剩余额度',style: text_131732_12b).marginOnly(top: 15.w,bottom: 10.w)),
                    Visibility(
                      visible: isShowBaiTiao.value && form != null && form!.baiTiaoList != null && form!.baiTiaoList!.isNotEmpty,
                      child: SizedBox(
                        height:  (form!.baiTiaoList!.length / 3).ceil() * 30.w + ((form!.baiTiaoList!.length / 3).ceil() - 1) * 10.w,
                        width: contentWidth,
                        child: CustomScrollView(
                          physics:const NeverScrollableScrollPhysics(),
                          shrinkWrap:true,
                          slivers: [
                            SliverGrid(
                              gridDelegate: SliverGridDelegateWithFixedCrossAxisCount(
                                  crossAxisCount: 3,
                                  mainAxisSpacing : 10.w,
                                  crossAxisSpacing : 10.w,
                                  childAspectRatio : (contentWidth - 20.w) / 3 / 30.w
                              ),
                              // delegate: SliverChildListDelegate(list),
                              delegate: SliverChildBuilderDelegate((context, index) {
                                var bean = baiTiaoList[index];
                                return RawMaterialButton(
                                    elevation: 0,
                                    fillColor:bean.select ?Color_main:Color_bg,
                                    highlightElevation : 0,
                                    shape: RoundedRectangleBorder(borderRadius: BorderRadius.circular(4.w)),
                                    constraints: BoxConstraints.tightFor(width: (contentWidth - 20.w) / 3, height: 30.w),
                                    child: Text('${bean.name}',style: text_131732_12.copyWith(color: bean.select?Color_white:Color_131732)),
                                    onPressed: ()=> {
                                      for(IdAndName i in baiTiaoList){
                                        i.select = false
                                      },
                                      baiTiaoList[index].select = true,
                                      temp.value = '${DateTime.now()}'
                                    }
                                );
                              },
                                childCount: baiTiaoList.length,
                              ),
                            ),
                          ],
                        ),
                      ),
                    ),

                    Visibility(
                        visible: isShowZmf.value && form != null && form!.zmScoreList != null && form!.zmScoreList!.isNotEmpty,
                        child: Text('芝麻分',style: text_131732_12b).marginOnly(top: 15.w,bottom: 10.w)),
                    Visibility(
                      visible: isShowZmf.value && form != null && form!.zmScoreList != null && form!.zmScoreList!.isNotEmpty,
                      child: SizedBox(
                        height:  (form!.zmScoreList!.length / 3).ceil() * 30.w + ((form!.zmScoreList!.length / 3).ceil() - 1) * 10.w,
                        width: contentWidth,
                        child: CustomScrollView(
                          physics:const NeverScrollableScrollPhysics(),
                          shrinkWrap:true,
                          slivers: [
                            SliverGrid(
                              gridDelegate: SliverGridDelegateWithFixedCrossAxisCount(
                                  crossAxisCount: 3,
                                  mainAxisSpacing : 10.w,
                                  crossAxisSpacing : 10.w,
                                  childAspectRatio : (contentWidth - 20.w) / 3 / 30.w
                              ),
                              // delegate: SliverChildListDelegate(list),
                              delegate: SliverChildBuilderDelegate((context, index) {
                                var bean = zmfList[index];
                                return RawMaterialButton(
                                    elevation: 0,
                                    fillColor:bean.select ?Color_main:Color_bg,
                                    highlightElevation : 0,
                                    shape: RoundedRectangleBorder(borderRadius: BorderRadius.circular(4.w)),
                                    constraints: BoxConstraints.tightFor(width: (contentWidth - 20.w) / 3, height: 30.w),
                                    child: Text('${bean.name}',style: text_131732_12.copyWith(color: bean.select?Color_white:Color_131732)),
                                    onPressed: ()=> {
                                      for(IdAndName i in zmfList){
                                        i.select = false
                                      },
                                      zmfList[index].select = true,
                                      temp.value = '${DateTime.now()}'
                                    }
                                );
                              },
                                childCount: zmfList.length,
                              ),
                            ),
                          ],
                        ),
                      ),
                    ),
                  ],
                )),
              ),
            ),
            SizedBox(height: 15.w),
            SizedBox(
              width: contentWidth,
              height: 46.w,
              child: Row(children: [
                RawMaterialButton(
                    constraints: BoxConstraints.tightFor(width: contentWidth, height: 46.w),
                    shape: RoundedRectangleBorder(borderRadius: BorderRadius.circular(23.w)),
                    elevation: 0,
                    fillColor:Color_main,
                    highlightElevation : 0,
                    child: Text('确认信息',style: text_white_14),
                    onPressed: ()=> submitInfo()
                ),
              ]),
            ),
            SizedBox(height: 5.w),
          ],
        ),
      ),
    );
  }


  chooseProvince(){
    if(form == null || form!.provinceList == null || form!.cityList == null){
      EasyLoading.showToast('暂无城市信息');
      isShowCity.value = false;
      return;
    }

    Get.bottomSheet(
      Container(
        height: Get.height / 6 * 5,
        padding: EdgeInsets.symmetric(horizontal: 15.w),
        decoration: BoxDecoration(
          color: Color_white,
          borderRadius: BorderRadius.vertical(top: Radius.circular(8.w)),
        ),
        child: Row(
          children: [
            Container(
              height: Get.height / 6 * 5,
              width: (Get.width - 30.w) / 2,
              child: ListView.separated(
                shrinkWrap : true,
                padding: EdgeInsets.zero,
                itemCount: form!.provinceList!.length ?? 0,
                separatorBuilder: (BuildContext context, int index) => Container(color:Color_line,height: 0.2),
                itemBuilder: (BuildContext context, int index) {
                  var key = form!.provinceList?.keys.toList()[index];
                  var value = form!.provinceList?.values.toList()[index];
                  return InkWell(
                    onTap: () => {
                      selectProvinceCode = '$key',
                      selectProvinceValue = value,
                      clickProvince('$key',value)
                    },
                    child: SizedBox(
                      height: 40.w,
                      child: Align(alignment : Alignment.centerLeft, child: Text('$value',style: text_131732_14)),
                    ),
                  );
                },
              ),
            ),
            Container(
              height: Get.height / 6 * 5,
              width: (Get.width - 30.w) / 2,
              child: Obx(()=>ListView.separated(
                shrinkWrap : true,
                padding: EdgeInsets.zero,
                itemCount: cityList.value.length ?? 0,
                separatorBuilder: (BuildContext context, int index) => Container(color:Color_line,height: 0.1),
                itemBuilder: (BuildContext context, int index) {
                  var key = cityList.value.keys.toList()[index];
                  var value = cityList.value.values.toList()[index];
                  return InkWell(
                    onTap: () => {
                      selectCityCode = '$key',
                      cityController?.text = value,
                      Get.back()
                    },
                    child: SizedBox(
                      height: 40.w,
                      child: Align(alignment : Alignment.centerLeft,
                          child: Text('$value',style: text_131732_14)),
                    ),
                  );
                },
              )),
            )
          ],
        ),
      ),
      isDismissible: true,
    );
  }

  /// 选择性别
  chooseGender(){
    Map<String, dynamic> map = {'1':'男','2':'女'};
    Get.bottomSheet(
      Container(
        width: Get.width,
        padding: EdgeInsets.symmetric(horizontal: 15.w),
        decoration: BoxDecoration(
          color: Color_white,
          borderRadius: BorderRadius.vertical(top: Radius.circular(8.w)),
        ),
        child: ListView.separated(
          shrinkWrap : true,
          padding: EdgeInsets.zero,
          itemCount: map.length,
          separatorBuilder: (BuildContext context, int index) => Container(color:Color_line,height: 0.1),
          itemBuilder: (BuildContext context, int index) {
            var key = map.keys.toList()[index];
            var value = map.values.toList()[index];
            return InkWell(
              onTap: () => {
                genderController?.text = value,
                Get.back()
              },
              child: SizedBox(
                height: 40.w,
                child: Align(alignment : Alignment.centerLeft,
                    child: Text('$value',style: text_131732_14)),
              ),
            );
          },
        ),
      ),
      isDismissible: true,
    );
  }

  clickProvince(String key, value) {
    Map<String, dynamic> temp = {};
    var start = key.substring(0,2);
    form?.cityList?.forEach((key, value) {
      if(key.startsWith(start)){
        temp[key] = value;
      }
    });
    cityList.value = temp;
  }

  void submitInfo() async {
    Map<String, dynamic> map = {'login_source': 'app'};

    if(isShowName.value){
      var name = nameController?.text;
      if(name == null || name.isEmpty){
        EasyLoading.showToast('请填写姓名');
        return;
      }else{
        map['name'] = name;
      }
    }
    if(isShowAge.value){
      var age = ageController?.text;
      if(age == null || age.isEmpty){
        EasyLoading.showToast('请填写年龄');
        return;
      }else{
        map['age'] = age;
      }
    }
    if(isShowGender.value){
      var gender = genderController?.text;
      if(gender == null || gender.isEmpty){
        EasyLoading.showToast('请选择性别');
        return;
      }else if(gender == '男'){
        map['gender'] = '1';
      }else if(gender == '女'){
        map['gender'] = '2';
      }
    }
    if(isShowIdentity.value){
      var identity = identityController?.text;
      if(identity == null || identity.isEmpty){
        EasyLoading.showToast('请填写身份证号');
        return;
      }else{
        map['identity_num'] = identity;
      }
    }
    if(isShowCity.value){
      var cityValue = cityController?.text;
      if(selectProvinceCode.isEmpty || selectProvinceValue.isEmpty || selectCityCode.isEmpty || cityValue == null || cityValue.isEmpty){
        EasyLoading.showToast('请选择城市');
        return;
      }else{
        map['prov_code'] = selectProvinceCode;
        map['ip_province'] = selectProvinceValue;
        map['city_code'] = selectCityCode;
        map['ip_city'] = cityValue;
      }
    }
    if(isShowPersonal.value && qualificationNotAll != null && qualificationList.isNotEmpty){ // 是否显示6项
      bool isSelect = false; // 六项是否有一个选中
      for (IdAndName e in qualificationList) {
        map['${e.id}'] = e.select ? '1' : '0';
        if(e.select){
          isSelect = true;
        }
      }
      if(!isSelect && !qualificationNotAll!.select){
        EasyLoading.showToast('请选择个人资产');
        return;
      }
      map['all_not'] = qualificationNotAll!.select ? '0' : '1'; // 选中传0
    }
    if(isShowHuaBei.value && huaBaiList.isNotEmpty){ // 是否显示花呗
      for (IdAndName e in huaBaiList) {
        if(e.select){
          map['huabei_limit'] = e.id;
        }
      }
      if(map['huabei_limit'] == null){
        EasyLoading.showToast('请选择花呗剩余额度');
        return;
      }
    }
    if(isShowBaiTiao.value && baiTiaoList.isNotEmpty){ // 是否显示白条
      for (IdAndName e in baiTiaoList) {
        if(e.select){
          map['baitiao_limit'] = e.id;
        }
      }
      if(map['baitiao_limit'] == null){
        EasyLoading.showToast('请选择京东白条剩余额度');
        return;
      }
    }
    if(isShowZmf.value && zmfList.isNotEmpty){ // 是否显示芝麻分
      for (IdAndName e in zmfList) {
        if(e.select){
          map['zm_score'] = e.id;
        }
      }
      if(map['zm_score'] == null){
        EasyLoading.showToast('请选择芝麻分');
        return;
      }
    }

    var result = await apiProvider.getData(map, ApiProvider.person_save);
    if(result.code == 200){
      Get.back();
      check();
    }else{
      EasyLoading.showToast('${result.msg}');
    }
  }

  /// 撞库并获取
  void check() async {
    EasyLoading.show();
    var check = await apiProvider.getData({}, ApiProvider.api_check);
    if(check.code == 200){
      var result = await apiProvider.getData({}, ApiProvider.api_usable);
      EasyLoading.dismiss();
      var product = Product.fromJson(result.data);
      if(product.id != null){
        showAuthDialog(product);
      }
    }else{
      EasyLoading.dismiss();
    }
  }

  showAuthDialog(Product product) {
    Get.bottomSheet(
      shape: RoundedRectangleBorder(borderRadius: BorderRadius.only(topLeft:Radius.circular(8.w),topRight: Radius.circular(8.w))),
      backgroundColor: Colors.white,
      isScrollControlled: true,
      Container(
          padding: EdgeInsets.symmetric(horizontal: 15.w),
          width: Get.width,
          height: Get.height / 6 * 5,
          child: Column(
            children: [
              Expanded(
                child: SingleChildScrollView(
                  child: Column(
                      crossAxisAlignment : CrossAxisAlignment.start,
                      children: [
                        SizedBox(height: 15.w),
                        Text('根据您的资质信息，成功为您匹配到贷款方',style: text_131732_12),
                        SizedBox(height: 10.w),
                        Container(
                          padding: EdgeInsets.all(12.w),
                          width: Get.width - 30.w,
                          decoration: BoxDecoration(
                            borderRadius: BorderRadius.circular(6.w),
                            color: Color_main,
                          ),
                          child: Column(
                            crossAxisAlignment : CrossAxisAlignment.start,
                            children: [
                              ClipRRect(
                                borderRadius: BorderRadius.circular(6),
                                child: Image.network(product.logoUrl, width: 35.w, height: 35.w),
                              ),
                              SizedBox(height: 9.w),
                              Row(
                                mainAxisAlignment : MainAxisAlignment.spaceBetween,
                                children: [
                                  Column(
                                      crossAxisAlignment : CrossAxisAlignment.start,
                                      children: [
                                        Text('${product.loanMin}-${product.loanMax}',style: text_white_12),
                                        Text('最高可借(元)',style: TextStyle(color: const Color(0xffffff99), fontSize: 8.sp)),
                                      ]),
                                  Column(
                                      children: [
                                        Text('${product.interestRate}',style: text_white_12),
                                        Text('日利率',style: TextStyle(color: const Color(0xffffff99), fontSize: 8.sp)),
                                      ]),
                                  Column(
                                      crossAxisAlignment : CrossAxisAlignment.end,
                                      children: [
                                        Text('${product.loanCycleMin}-${product.loanCycleMax}月',style: text_white_12),
                                        Text('最长可还(期)',style: TextStyle(color: const Color(0xffffff99), fontSize: 8.sp)),
                                      ]),
                                ],
                              )
                            ],
                          ),
                        ),
                        SizedBox(height: 10.w),
                        Container(
                          padding: EdgeInsets.all(12.w),
                          width: Get.width - 30.w,
                          decoration: BoxDecoration(
                            borderRadius: BorderRadius.circular(6.w),
                            color: const Color(0xffe0eaff),
                          ),
                          child: Text('温馨提示:我们将对您自主填写的个人信息进行智能匹配、传递给第三方机构，为您提供贷款服务。境外以及香港电话均为诈骗，请勿接听，此外一切要求您提前转账或收取中介费的行为均为诈骗。',style: text_131732_12.copyWith(fontSize: 10.sp)),
                        ),
                        SizedBox(height: 10.w),
                        Container(
                          padding: EdgeInsets.all(12.w),
                          width: Get.width - 30.w,
                          decoration: BoxDecoration(
                            borderRadius: BorderRadius.circular(6.w),
                            color: const Color(0xfff0f0f0),
                          ),
                          child: Column(
                            crossAxisAlignment : CrossAxisAlignment.start,
                            children: [
                              Center(child: Text('个人信息授权书',style: text_131732_12)),
                              SizedBox(height: 10.w),
                              Text('授信机构(“授信机构”)：重庆两江新区宝升小额贷款股份有限公司\n\n法定代表人:郑伟京\n\n注册地址:重庆市渝北区财富大道13号第8层\n\n指定平台:微银信用\n\n贷款服务方:北京恒逸达商务有限公司(下游机构主体信息)\n\n特别提示\n\n借款人在此确认，您正在通过仁天花平台向授信机构提交额度申请，请借款人务必充分阅读本合同所有条款(含特别提示及正文)，尤其是加粗、加下划线部分(如加重或限制借款人权利的部分、免责条款、管辖条款等)，如您对相关条款有任何疑问需要说明的，请与授信机构指定方联系，联系方式为【028-38289396】，以便我们为借款人解释和说明。\n\n在借款人确认签署本合同之前，应确保已核对自身的身份信息无误，且借款人承诺其具有签订和履行本合同的资格和能力；承诺本人不是在校学生，不存在隐瞒或者虚构身份向授信机构申请贷款的情形；亦不违反任何其他合同义务以及相关法律法规的规定。\n\n借款人知悉并同意：您同意通过数据电文形式订立本合同，您通过网络页面或客户端点击同意或确认的按钮或通过其他操作表示接受本合同内容或使用贷款服务，即视为借款人已充分阅读并理解本合同所有条款的含义及相应法律后果，并同意受本合同约束，但授信机构授信审核通过后您方可使用授信额度。授信机构通过识别借款人的身份对使用本额度的交易进行身份验证，借款人同意授信机构任何通过刷脸视频、密码验证等其中的一种或几种手段成功识别借款人身份后产生的交易均为借款人的交易。\n\n第一条 授信额度\n\n1.授信额度（具体金额详见页面展示）是指授信机构评估提供的可供借款人使用的贷款本金余额的最高授信额度限额。请借款人理解并同意，授信机构可能因借款人的贷款表现、资信情况、消费行为、经营活动、贷款用途或业务政策、风险政策的变化以及授信机构认为有必要的其他考量因素而适时调整对借款人的授信额度（如提额、降额或终止授信等）或给予借款人不同类型的额度（如循环额度、一次性额度）及额度使用条件。授信额度并不构成授信机构必须履行的放款义务，借款人使用额度，仍需向授信机构逐笔申请、与授信机构另行签署借款合同（具体名称以实际签署为准，下同）等系列合同文本并经授信机构审批同意。是否对借款人放款以授信机构实际审批结果为准。借款人的实际可使用额度原则上为前述授信额度扣除借款人已经支取且尚未结清的贷款本金后的剩余金额，具体可使用额度以借款人申请用信提款时前端页面展示的可用额度为准。额度相关信息以授信机构系统记录为准，具体合同中另有说明的除外。\n\n2.借款人知悉并同意您的授信额度可能由授信机构单独或联合其他具有放贷资质的机构给予，您可通过信息平台服务页面查看具体的授信额度。授信额度类型、使用期限、使用场景、使用条件可能因产品功能不同或授信机构不同等因素而产生变化。请您密切关注相关额度规则。\n\n第二条 授信用途\n\n1.请借款人知晓，本合同授信额度只能用于借款人申请具体用信提款时签署的借款合同中载明的用途。\n\n2.借款人承诺严格按照本合同约定的用途使用授信额度，不挤占挪用或将贷款用于股票、金融衍生品等投资；房地产市场违规融资；法律法规、银保监会和地方金融监管部门禁止的其他用途。\n\n第三条 授信期限\n\n1.授信期限是指授信机构给予借款人的授信额度的有效期间，本合同项下授信额度有效期为本合同生效之日起【3】年。授信额度有效期届满前，若本合同双方均未提出异议，本合同应从到期之日起自动顺延一年，并以此类推，顺延次数不限。\n\n2.对于借款人的每一笔借款用信申请，授信机构将根据审批规则自主决定是否提供。相应的，借款人在本合同项下的授权在授信机构授信有效期内持续有效。授信到期后或因授信机构政策调整，借款人可能需重新提交授信申请。\n\n请借款人注意：授信期限并不意味着借款人在该期限内持续享有固定授信额度，借款人的授信额度可能根据本合同的约定发生调整。\n\n在额度有效期内，借款人可以提起用信提款申请，具体用信金额、贷款用途、贷款利率、贷款支付方式、还款规则、计息规则、提前还款规则等以届时签订的借款合同为准，借款合同与本合同不一致的，以借款合同为准。\n\n第四条 承诺与保证\n\n1.借款人拥有完全民事权利能力和民事行为能力签署及履行本合同，签署本合同是借款人真实意思表示。本合同构成对借款人具有约束力的合同，授信机构可以根据合同条款要求借款人履约或对借款人执行。\n\n2.借款人具有有效的身份证明，信用良好，有能力按期偿还贷款相关款项，借款人在本合同项下的债务以借款人个人财产和夫妻共同财产承担清偿责任，借款人已获得借款人配偶（如有）的同意。\n\n3.借款人保证本合同项下任何一笔借款的用途符合国家法律法规的规定并严格按照本合同约定的用途使用本合同项下的贷款，不擅自改变贷款用途或将贷款挪作他用，不将本合同项下任何一笔资金与借款人或借款人直系亲属的证券投资第三方存管账户相关联。\n\n4.借款人已在申请文件中向授信机构如实、完整地说明了借款人个人有关信息，借款人已根据授信机构的要求对本人资产、负债情况进行说明，借款人保证上述情况说明及材料（如有）全部是真实、完整、准确、合法、有效的，并不存在任何隐瞒、虚假、欺诈或误导。\n\n5.借款人订立和履行本合同，并不违反任何对借款人有约束力的法律、法规、规章、行政命令或生效的司法裁判/仲裁裁决，不违反任何对借款人有约束力的合同、协议或承诺，不侵犯任何第三方的合法权益。\n\n6.截至本合同签署之日，不存在涉及借款人的任何刑事/行政/民事诉讼程序、调解程序、仲裁程序、行政处罚程序或其他争议。\n\n7.贷款期内，借款人如发生经济情况恶化，包括但不限于失业、单位破产或个人财产遭受重大损失、个人身体情况发生重大不利变化、离婚、丧失民事行为能力、失踪、死亡等可能影响借款人履行本合同能力的事项，应在发生或可能发生之日起【7】个工作日内按授信机构指定方式通知授信机构，授信机构有权根据具体情况决定是否终止授信、提前收回部分或全部贷款。\n\n8.借款人保证根据授信机构的要求向授信机构提供符合本合同约定用途的相关贷款支付凭证（包括但不限于收据、发票、商家出具的消费清单等）。\n\n9.如有任何损害或可能损害授信机构在本合同项下权益的事实发生或可能发生，借款人应尽力采取补救措施并毫不迟延地通知授信机构。\n\n10.无论是借款人本人或是以借款人名义使用借款人的用户名和密码登录后进行的一切活动均代表借款人本人的意思并由借款人承担相应的法律后果。\n\n11.借款人承诺将妥善保管本人的账号、密码、绑定的手机号码、手机校验码等与办理及使用贷款过程中的一切有关信息。借款人应确保不向其他任何人泄露有关账号信息和密码。对于因账号、密码泄露所致的损失，由借款人自行承担。如借款人发现有他人冒用或盗用本人账号及密码或任何其他未经合法授权之情形时，应立即通知授信机构，要求其暂停相关服务。同时，借款人理解授信机构对相应的请求采取行动需要合理期限，在授信机构对借款人相应的请求采取行动之前，针对向该账户已执行的指令及/或所导致的借款人损失，授信机构不承担责任。\n\n12.借款人同意并认可除非有可靠、确定的相反证据，授信机构有关本金、利息、费用和还款记录等内容的内部账务记载，授信机构制作或保留的借款人办理提款、还款、付利息等业务相关过程中发生的单据、凭证及授信机构催收贷款的记录、凭证，均构成有效证明借贷双方之间债权债务关系的确定证据。借款人不能仅因为上述记录、记载、单据、凭证均由授信机构单方面制作或保留，而提出异议。\n\n第五条 个人信息保护\n\n除根据法律法规规定外，在收集、使用、分享借款人的信息时，授信机构将按照其发布的隐私政策或与借款人签署的《个人信息授权书》（具体名称以实际签署为准）等协议文本的要求严格保护借款人的信息。请借款人仔细阅读相关政策、条款；如有疑问，请随时联系授信机构。\n\n第六条 违约情形\n\n借款人发生下列情形之一的，即构成违约：\n\n1.本合同项下贷款发生逾期、欠息或借款人未按约定的用途使用贷款资金；\n\n2.借款人或担保人违反与授信机构的签署的合同（包括但不限于贷款合同、担保合同）的约定或者发生担保合同项下的违约事项，或者担保合同未生效、无效或被撤销；担保物价值明显减少、灭失、权属发生争议；\n\n3.借款人违反其所作出的任何声明、保证和承诺的；\n\n4.借款人拒绝授信机构对其信用状况、财务情况、履约能力、对外担保及金融服务使用情况等进行检查监督，拒绝提供有关资料的；\n\n5.借款人提交的资料、信息、材料不真实、不准确、不合法、过期或无效的；\n\n6.借款人提交的任何信息发生变更、失效、或发生被盗用等异常情况而未及时通知授信机构的；\n\n7.借款人签署本合同所使用的账户被盗用、丢失或停用，但未及时报案和/或通知授信机构的；\n\n8.借款人或担保人经营、财务状况恶化，发生收入大幅下滑、重大财务亏损、资产损失（包括但不限于因对外投资、对外担保而发生资产损失）或其他财务危机；\n\n9.借款人存在未及时申报或申报虚假纳税相关信息（包括但不限于财务报表）；出现欠缴应纳税款、发生税务违法违章、被税务部门行政处罚等行为；借款人发生违法违规经营行为受到行政处罚、刑事制裁，或涉及重大法律纠纷；\n\n10.借款人、借款人投资的企业、担保人涉及重大案件或主要资产被采取了财产保全等强制措施或收到行政处罚、刑事制裁，或出现其他导致其无法正常履行职责事件；\n\n11.借款人或担保人向第三方提供担保，对其财务状况或履行本合同项下义务的能力产生重大不利影响；\n\n12.借款人、借款人投资的企业、担保人或担保人投资的企业出现分立、合并、重大兼并、收购重组、重大资产处置、减资、歇业、停业整顿、清算、改组、被撤销、被解散、破产，被吊销营业执照等；\n\n13.借款人其他违反本合同约定的情形或借款人出现其他影响其偿债能力的情形。\n\n第七条 授信机构可采取的措施\n\n若借款人违约，授信机构将采取下列一种或数种措施：\n\n1.冻结、减少或取消借款人在本合同下的授信额度，调整授信期限，中止或终止本合同；\n\n2.要求借款人限期纠正违约行为；\n\n3.采取法律许可的任何其他救济措施。\n\n第八条 免责及责任限制\n\n1．若发生授信机构对借款人指令识别错误或执行错误，则借款人须在知道或应当知道错误发生后的三个自然日内书面通知授信机构和/或平台并尽力采取措施防止损失扩大，授信机构和/或平台对间接损失、履行利益、后果性损害、非财产损害、不能预见的损失及借款人未及时通知导致的扩大损失不承担赔偿责任。\n\n2．不可抗力\n\n(1)不可抗力是指不能预见、不能避免并不能克服的客观情况，包括但不限于法律法规的调整、电信部门技术调整和线路故障、恶意软件、病毒、黑客攻击、台风等自然灾害、行业监管部门监管要求的变化以及司法行为等为协议任何一方所无法抗拒的外力。\n\n(2)任何一方如因不可抗力导致不能履行本协议约定义务或其履约遭延误，遭遇不可抗力的一方应在受到不可抗力影响之日起5日内书面通知另一方，并提供政府行政部门等相关机关出具的不可抗力发生及其影响的证明。双方应采取一切必要且合理的努力预防和减轻损失。因不可抗力造成本协议所涉业务无法继续开展的，遭受不可抗力的一方应及时通知对方并配合对方处理后续事宜。\n\n(3)不可抗力的影响结束后，除双方另有约定外，双方应继续履行本协议。\n\n第九条 通知与送达\n\n1．借款人应确保提供的联系人姓名、通讯地址、家庭住址、工作单位地址、身份证地址、手机号码、电子邮箱、传真号码、微信号、平台用户名等信息完整、准确、有效。除非另有约定，上述地址均为本协议涉及和有关的各类通知的送达地址，借款人同意并确认本协议发生纠纷时相关文件和法律文书以户籍所在地地址为邮寄送达的收件地址，上述手机号码、电子邮箱、传真号码、微信号等均为本协议涉及和有关的各类通知以及就本协议发生纠纷时相关文件和法律文书以电子方式送达的收件地址，包括但不限于纠纷进入仲裁、调解、一审、二审、再审、执行及监督程序等所包含的各个程序和阶段。\n\n2．各方一致确认，上述借款人提供的联系地址适用范围包括但不限于双方之间的各类告知书、通知书、往来函件、工作联系单、协议文件、诉讼文书（以下统称为“文书”），送达主体可以是合同各方、平台、调解机构、仲裁机构、人民法院及各行政机关。\n\n送达主体按照上述送达地址进行送达，视为有效送达；采用邮寄送达的，以文书寄出之日后的第三日视为送达之日；直接送达的，送达人当场在送达回证上记明情况之日视为送达之日；拒绝签收的，以文书寄出之日后的第二日视为送达之日；由他人代收的，以文书寄出之日后的第二日视为送达之日；各方一致确认可采用平台公告、平台站内消息、短信、微信、电子邮件等电子送达方式进行送达，采用电子形式送达的，以发送方系统发出时间即视为送达，被借款人服务器拒收的，仍以发送方系统发出时间即视为送达。\n\n上述送达地址、受送达人、联系方式发生变更的，变更一方应履行通知义务，借款人在调解、仲裁及诉讼程序中变更送达地址的，还应同时向调解机构、仲裁机构或法院履行通知义务。如当事人未按前述方式履行通知义务，则本条所约定的送达地址仍视为其有效送达地址。因本条所约定的借款人送达地址不准确、当事人送达地址变更后未及时书面告知、借款人或指定联系人拒绝签收等原因，导致未能被当事人实际接收的，邮寄送达的，以文书寄出之日后的第二日视为送达之日；直接送达的，送达人当场在送达回证上记明情况之日视为送达之日；拒绝签收的，以文书寄出之日后的第二日视为送达之日；由他人代收的，以文书寄出之日后的第二日视为送达之日；采用平台公告、平台站内消息、短信、微信、电子邮件等电子形式送达的，以发送方系统发出时间即视为送达，被借款人服务器拒收的，仍以发送方系统发出时间即视为送达。已履行送达地址变更通知义务的，以变更后的送达地址为有效送达地址。\n\n借款人同意并确认上述通知和送达的条款且无异议。\n\n3.若本协议项下债权发生一次或多次转让，则转让时由债权出让方发送给借款人的《债权转让通知》的送达也适用上述关于送达的程序、效力的约定。\n\n4.若本协议项下债权发生一次或多次转让，则本协议项下债权的最终受让方与本协议借款人因本协议及/或债权转让事项而引起的任何纠纷也适用上述关于送达的程序、效力的约定。\n\n第十条 法律适用与争议管辖\n\n1．本协议适用中华人民共和国法律法规。本协议引起及与本协议有关的争议，双方应友好协商解决，协商不成时原告有权将纠纷或争议提交至本授权书签订地（即杭州市余杭区）有管辖权的人民法院。\n\n2．借款人同意且自愿选择适用在线诉讼规则的相关规定，遵从管辖法院采用视听传输技术等方式开庭审理及根据法院的实际安排实行合并审理。\n\n第十一条 合同变更、终止和权利义务的转让\n\n1.为了不断改进服务质量，在本合同修改内容不会加重借款人的责任或限制借款人的权利的前提下，授信机构将在不违反法律法规的前提下适时优化或修改本合同条款。一旦合同条款或授信机构发生变更，授信机构将提前通过平台公示并按本合同约定的通知方式通知借款人；除法律法规或监管规定另有强制性规定外，经修订的内容将在生效时间以通知后生效载明日期为准。若借款人无法同意修改本合同，则请自该等通知送达之日起结清欠款（如有）并立即停止使用本合同项下服务；若借款人在修订生效后继续使用本合同项下服务，视为接受修改后的合同内容，亦同意以修订后的合同签约。尽管有前述约定，借款人亦可通过与授信机构协商一致的方式进行合同变更。\n\n如本合同修改内容会加重或限制借款人的权利，授信机构将向借款人发起确认签署更新版本；则修订的内容在确认签署时生效。\n\n2.除授信机构许可之外，在借款人的具体借款合同项下存在应偿付款项（例如借款本金和利息、相关服务费等）或借款人与授信机构尚有争议的情况下，借款人无法终止本合同；授信机构可能因额度不足、风险控制、终止合作等原因而暂停或终止本合同。\n\n3.在不影响借款人实际权益的前提下，借款人同意授信机构可将本合同项下的权利和义务部分或全部转让给第三方，且该转让于授信机构通知借款人之时即生效。\n\n第十二条 其他\n\n借款人已全部阅读并理解本合同条款；授信机构已采取合理方式提请借款人注意本合同项下条款，并按借款人要求对有关条款予以充分说明；借款人对本合同所有条款内容的理解不存在异议。',style: text_grey_12.copyWith(fontSize: 10.sp))
                            ],
                          ),
                        ),
                      ]),
                ),
              ),
              SizedBox(height: 15.w),
              Container(
                width: Get.width - 30.w,
                height: 46.w,
                child: Row(children: [
                  RawMaterialButton(
                      constraints: BoxConstraints.tightFor(width: Get.width - 30.w, height: 46.w),
                      shape: RoundedRectangleBorder(borderRadius: BorderRadius.circular(23.w)),
                      elevation: 0,
                      fillColor:Color_main,
                      highlightElevation : 0,
                      child: Text('同意协议去提现',style: text_white_14),
                      onPressed: ()=> apiEnter(product)
                  ),
                ]),
              ),
              SizedBox(height: 15.w),
            ],
          )
      ),
    );
  }

  void apiEnter(Product product) async {
    var result = await apiProvider.getData({}, ApiProvider.api_enter);
    if(result.code == 200){
      Get.back();
    }else{
      EasyLoading.showToast('${result.msg}');
    }
  }
}
